home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / misc / Life.lzh / Life / README < prev    next >
Text File  |  1993-03-13  |  7KB  |  164 lines

  1. Now announcing LIFE 6.1!
  2.  
  3. And much faster!  All known bugs fixed.  Works up to a horizontal size of
  4. 262,112 and a vertical size of 65,535.  (But not both unless you have 4G of
  5. memory.) The size is no longer limited to the amount of chip memory you
  6. have!  Scroll around using the arrow keys; hold down the shift or control
  7. for finer scrolling resolution.  The `o', `p', and `a' options are gone; it
  8. always uses assembly, since the new assembly is faster than the blitter.
  9. Use of the function keys to speed up the display by not refreshing every
  10. generation (F1 refreshes only every 5th generation, F2 every 10th, F3 every
  11. 11th, etc.) F10 goes to the center of the screen.  Now loads both PIC and
  12. RLE files (get them from FASTLIFE on Fish disk 802---a great set!)
  13.  
  14. For a much friendlier LIFE, see FASTLIFE on Fish disk 802.  I'm hoping
  15. the algorithm in this version of my LIFE will end up there!
  16.  
  17. First, let's run it.  Simply change directories to the life directory on
  18. the disk, and type, for instance,
  19.  
  20.     life xmp/r
  21.  
  22. That's all there is to it!  Hit Q, ESC, X, or ^C to exit.  Some other
  23. sample command lines are:
  24.  
  25.     life -h xmp/acorn
  26.     life -o -t -p2 xmp/bomb
  27.     life -r100 -h xmp/bcity  ; be patient!
  28.  
  29. The rest of this documentation has three parts:  an explanation of the
  30. command line arguments, an explanation of the keyboard command keys during
  31. the run of the program, and an explanation of the macro language.  This
  32. is the usage line of the program.  Note that all parameters must not be
  33. separated from their option letter by a space; use -h352 instead of -h 352.
  34.  
  35.     life [-h[n]] [-r[n]] [-pn] [-o] [-t] [-v[n]] [-s] [infile]
  36.  
  37. -h    This option sets hires mode.  The optional parameter sets the
  38.     horizontal resolution to something other than 640.  Actually,
  39.     if the parameter is less than 400, low res is assumed.
  40.  
  41. -r    Set a cell randomly every generation.  If a parameter is supplied,
  42.     it indicates how long to delay in generations before setting each
  43.     cell; -r10 sets a random cell every 10 generations.
  44.  
  45. -t    Wrap the screen as in a torus.
  46.  
  47. -v    Set the vertical resolution.  If the supplied parameter is greater
  48.     than 300, the screen is set to interlace.
  49.  
  50. -s    Do not start computing until the appropriate keyboard key is hit.
  51.  
  52. -d    Display only every `n'th generation; this can speed things up.
  53.  
  54. -m    Only compute up to this many generations.  Useful for timing.
  55.  
  56. Which brings us to the keyboard command options.  These keys should be hit
  57. during the programs execution.
  58.  
  59. Q, X,    Exit the program.  Because the explanation is so simple but there
  60. ^C, ESC    are so many keys, I need to add this nonsense sentence so the docs
  61.     documentation looks pretty.
  62.  
  63. 0, G    Go!  Run at full speed.
  64.  
  65. S    Stop.  Wait for one of the keystroke commands to continue.
  66.  
  67. SPACE    Execute a single generation and then stop.  Useful for single-stepping.
  68.  
  69. 1, 2,    Insert a delay between generations; slow things down enough so you
  70. 3, 4,    can watch comfortably.  The actual delay inserted can be calculated
  71. 5, 6,    by the formula (2^n)/50, in seconds, where n is the key pressed.
  72. 7, 8,    This allows delays from 1/25 of a second between generations, all the
  73. 9    way to 10.24 seconds between generations.
  74.  
  75. F1, F2, Only update the display every so often.  F1 means every fifth
  76. F3, F4, generation, F2 means every tenth, etc.  This option is added because
  77. F5, F6, if the size of the screen is a significant fraction of the LIFE
  78. F7, F8, field, it can take longer to update the screen than to compute the
  79. F9    next generation!
  80.  
  81. F10    Move to the center of the current field.
  82.  
  83. Arrow    If the LIFE field is larger than the screen, the arrow keys allow
  84. Keys    you to scroll around.  The arrow keys by default move 256 pixels.
  85.     Using shift allows you to `half' the amount, and control allows
  86.     you to divide it by four, and both control and shift held down
  87.     with an arrow key moves you 32 pixels, the minimum amount.  You
  88.     can scroll while it is running or while it is stopped.
  89.  
  90. Ahh, now we get to the hard part, documenting the macro language which is
  91. used to set up initial generations.  This command language is based somewhat
  92. on Logo (remember multitasking Color Computer Logo?)  All whitespace is
  93. ignored.  All caps are converted to lowercase.  Comments are enclosed in
  94. < and >.  The turtle starts in the middle of the screen, facing up, with
  95. the pen down.  The basic commands are:
  96.  
  97. f    Move forward one cell, setting the current cell if the pen is down.
  98. r    Turn towards the right.
  99. l    Turn towards the left.
  100. b    Turn facing the other direction.
  101. u    Lift the pen off the paper.
  102. d    Put the pen on the paper.
  103.  
  104. In addition, the language has been extended to automatically read in the
  105. standard LIFE RLE and PICT formats.
  106.  
  107. The commands take a single argument, as well.  For instance,
  108.  
  109.     10 f
  110.  
  111. moves forward 10 times, setting cells if the pen is down.
  112.  
  113. Parentheses group actions, which can be repeated.  For instance,
  114.  
  115.     10 ( f r f l )
  116.  
  117. with the pen down draws a staircase pattern, by moving forward, then right,
  118. then forward, then left, 10 times.  This grouping is nestable.
  119.  
  120. x    Go to the x location supplied as a parameter.
  121. y    Go to the y location supplied as a parameter.
  122. -    Flip left and right.  If executing again, things go back to normal.
  123. +    Make right be the normal right, undoing any effects of the above.
  124. .    Move forward without setting any cells, ignoring the current pen.
  125. *    Move forward, setting the current cell, ignoring the current pen.
  126.  
  127. Brackets ([]) push and pop a location stack.  The things saved and restored
  128. are the x and y location, the direction, whether `right' means a real right
  129. or a left (from the - command), and the pen state.  Thus, you can do things
  130. like:
  131.  
  132.     10 ( [ 10 * ] r . l )
  133.  
  134. to draw a 10 by 10 filled block.  That `r . l' sequence occurs often enough
  135. that the command `,' is used for it.  This way, you can draw pictures in
  136. your editor.  To draw a glider, you might use:
  137.  
  138.     [.*.],
  139.     [..*],
  140.     [***]
  141.  
  142. Easy enough, eh?  One last thing.  You can even define single-character
  143. macros!  If you use that glider often enough, you can make it a macro by
  144. simply using the `=' command.  You must assign it to something grouped in
  145. parenthesis.  So,
  146.  
  147. = g ( [
  148.    [.*.],
  149.    [..*],
  150.    [***]
  151.    ] )
  152.  
  153. sets `g' to be a glider macro.  Each time you use g in your script file, a
  154. glider will be drawn.  Note that it is good practice to enclose your macro
  155. definitions with [ and ], hence the brackets above.
  156.  
  157. There is a handful of examples provided.  No apologies are made for the
  158. cryptic command language or the single character macros supplied.
  159.  
  160. Enjoy!  Bugs to Tomas Rokicki, Box 2081, Stanford, CA  94309.
  161.  
  162. Coming soon:  yet another version, this one with an infinite universe,
  163. much faster generation, and more!
  164.